Problem
【JSOI2007】合金
Description
某公司加工一种由铁、铝、锡组成的合金。他们的工作很简单。首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同。然后,将每种原材料取出一定量,经过融解、混合,得到新的合金。新的合金的铁铝锡比重为用户所需要的比重。 现在,用户给出了种他们需要的合金,以及每种合金中铁铝锡的比重。公司希望能够订购最少种类的原材料,并且使用这些原材料可以加工出用户需要的所有种类的合金。
Input
第一行两个整数和,分别表示原材料种数和用户需要的合金种数。第到行,每行三个实数,分别表示铁铝锡在一种原材料中所占的比重。第到行,每行三个实数,分别表示铁铝锡在一种用户需要的合金中所占的比重。
Output
Sample Input
1 | 10 10 |
Sample Output
1 | 5 |
标签:凸包
Floyed
Solution
首先,给出的三个参数确定两个就能确定第三个,因此可以把参数缩减为两个。
考虑两种金属是否能造出第三种金属,若能造成,则第三种金属的两个参数必和这两种金属的参数成比例关系。
推广到用种金属制造一种合金,若将这种金属的两个参数作为横纵坐标描成点,那么合金所代表的点只要在这个点形成的凸包内即可制造。
由此,题目转化为选出尽量少的点使得目标点都在选出点所构成的凸包内。
对于一个条有向线段,它能被选出到凸包上当且仅当所有目标点都在它的左侧。那么处理出所有这样的边后,我们就在点与点间连出了若干条边。我们需要尽量选尽量少的点,即选尽量少的边,使其构成凸包。这样直接跑后枚举起始点即可。
Code
1 |
|